package design.demos.call;

import design.demos.call.bo.CallParams;

public abstract class AbstractCall implements Call{
    @Override
    public String syncCallVoice(CallParams params) {
        String audioPath = getAudioPathByContactId(params.getContactId());
        //todo 将音频写入到七牛云
        System.out.println("将音频写入到七牛云中...");
        //todo 七牛云返回地址写入到数据库
        System.out.println("七牛云返回地址写入到数据库...");
        return audioPath;
    }

    /**
     * 这个接口子类可选择性实现
     * @param params
     */
    @Override
    public void syncEndReasonInfo(CallParams params) {
        //todo
    }

    /**
     * 通过contactId获取音频路径（需要留给子类去实现，因为每种呼叫厂商的获取方式会有区别）
     * @param contactId 呼叫id
     * @return 呼叫语音的音频路径
     */
    protected abstract String getAudioPathByContactId(String contactId);

}
